package zinterface

import "net"

//定义连接模块的抽象层
type IConnection interface{
	//启动连接--让当前连接准备开始工作
	Start()

	//停止连接--让当前连接结束工作
	Stop()

	//获取当前连接绑定的socket conn
	GetTCPConnection() *net.TCPConn

	//获取当前连接模块的ID
	GetConnID()uint32

	//获取客户端的TCP状态：IP 和 port
	GetRemoteAddr()net.Addr

	//发送数据--将要发送给客户端的数据，先打包，再发送
	SendMsg(msgID uint32,data []byte)error

	//设置连接属性
	SetProperty(key string,value interface{})

	//获取连接属性
	GetProperty(key string)(interface{},error)

	//移除连接属性
	RemoveProperty(key string)
}

//定义一个处理连接业务的方法--函数类型(以后用户自定义处理方法时必须满足这个规范)
//三个参数分别是：1.服务端和客户端的连接。2.传输的内容。3.内容的长度
type HandleFunc func(*net.TCPConn,[]byte,int)error